// ----------------------------------
// RSDK Project: Sonic Essence
// Script Description: CGS Splash Screen
// Script Author: Xanman
// ----------------------------------

//-------Aliases-------//
private alias object.value0 : checkeroffset
private alias object.value1 : default.scale
private alias object.value2 : fliptimer
private alias object.value3 : flipcount
private alias object.value4 : logotimer
private alias object.value5 : shinetimer

//-------Function declarations-------//

//-------Static Values-------//

//-------Tables-------//


//-------Functions-------//


event ObjectMain

	if inputPress.start == 1
		if object.state < 5
			object.state = 5
		else
			object.state = 8
		end if
	end if
		

	if object.state < 3
		checkeroffset += 2
	else
		checkeroffset++
	end if

	switch object.state
		case 0
			if SaveRAM[409] == 1
				LoadPalette("Global/TitleScreen.act", 0, 0, 0, 255)
				ResetObjectEntity(object.entityPos, TypeName[ST Screen], 0, object.xpos, object.ypos)
				object.value0 = 255
			else
				LoadPalette("CGS/CGS.act", 0, 0, 0, 255)
				default.scale = object.scale
				object.scale = 2800
				object.state++
			end if
		break
		case 1
			if object.scale == 2800
				PlaySfx(SfxName[Light Dash], 0)
			end if
			if object.scale >= default.scale
				object.scale -= 100
			else
				//object.scale = default.scale
				object.scale = 0
				fliptimer = 10
				object.frame = 3
				object.state = 3
				PlaySfx(SfxName[Dark Jump], 0)
			end if
		break
		case 2 //flip code, its rough
			fliptimer++
			if flipcount < 8
				if fliptimer > 10
					if object.direction == FLIP_NONE
						object.frame = 4
						object.direction = FLIP_X
						PlaySfx(SfxName[Release], 0)
						if flipcount == 5
							fliptimer = -5
						else
							if flipcount == 6
								fliptimer = -5
							else
								if flipcount == 7
									fliptimer = -16
								else
									fliptimer = 0
								end if
							end if
						end if
						flipcount++
					else
						object.frame = 3
						object.direction = FLIP_NONE
						PlaySfx(SfxName[Release], 0)
						if flipcount == 5
							fliptimer = -5
						else
							if flipcount == 6
								fliptimer = -5
							else
								if flipcount == 7
									fliptimer = -16
								else
									fliptimer = 0
								end if
							end if
						end if
						flipcount++
					end if
				end if
			else
				object.scale = 0
				logotimer++
				if logotimer >= 10
					object.state++
					PlaySfx(SfxName[Dark Jump], 0)
				end if
			end if	
		break
		case 3		
			temp2 = default.scale
			temp2 += 150
			if object.scale <= temp2
				object.scale += 70
			else
				object.scale = temp2
				object.state++
			end if
		break
		case 4
			if object.scale >= default.scale
				object.scale -= 70
			else
				object.scale = default.scale
				object.state++
			end if
		break
		case 5
			SetMusicTrack("snd_cgs2021_endsa2theme.ogg", 0, 0)
			PlayMusic(0)
			object.frame = 7
			object.state++
			break
		case 6
			logotimer++
			shinetimer++
			if logotimer >= 70
				if shinetimer >= 3
					if object.frame <= 18
						object.frame++
						shinetimer = 0
					else
						object.frame = 19
					end if
				end if
			end if
			if logotimer >= 300
				object.state++
			end if
			break
		case 7
			if object.scale >= 0
				object.scale -= 70
			else
				object.scale = 0
				object.alpha = 0
				object.state++
				PlaySfx(SfxName[Sign Post], 0)
			end if
			break
		case 8
			object.rotation = -45
			if object.scale <= 15000
				object.scale += 1000
				object.alpha += 15
			else
				object.scale = 15000
				object.state++
			end if
			break
		case 9
			if object.alpha <= 255
				object.alpha += 15
			else
				object.alpha = 255
				object.state++
				logotimer = 0
			end if
			break
		case 10
			logotimer++
			if logotimer >= 40
				LoadPalette("Global/TitleScreen.act", 0, 0, 0, 255)
				ResetObjectEntity(object.entityPos, TypeName[ST Screen], 0, object.xpos, object.ypos)
				object.value0 = 255
			end if
			break
	end switch
end event

event ObjectDraw

	DrawRect(0, 0, screen.xsize, screen.ysize, 0, 0, 0, 255)

	if object.state != 9
	temp0 = 0
	temp1 = 0
	while temp1 < screen.xsize
		DrawSpriteScreenXY(0, temp0, temp1)
		temp1 += 4
		DrawSpriteScreenXY(0, temp0, temp1)
		temp1 += 4
	loop

	temp0 = 0
	temp1 = 0
	temp1-= checkeroffset
	while temp1 < screen.xsize
		DrawSpriteScreenXY(1, temp0, temp1)
		temp1 += 32
		DrawSpriteScreenXY(1, temp0, temp1)
		temp1 += 32
	loop

	temp0 = screen.xsize
	temp0 -= 32
	temp1 = 0
	temp1-= checkeroffset
	while temp1 < screen.xsize
		DrawSpriteScreenXY(2, temp0, temp1)
		temp1 += 32
		DrawSpriteScreenXY(2, temp0, temp1)
		temp1 += 32
	loop
	end if


	temp0 = screen.xcenter
	temp1 = screen.ycenter

	if object.state == 1
		DrawSpriteScreenFX(3, FX_SCALE, temp0, temp1)
	end if

	if object.state == 2
		DrawSpriteScreenFX(object.frame, FX_FLIP, temp0, temp1)
	end if

	if object.state == 3
		DrawSpriteScreenXY(3, temp0, temp1)
		DrawSpriteScreenFX(5, FX_SCALE, temp0, temp1)
	end if

	if object.state == 4
		DrawSpriteScreenXY(3, temp0, temp1)
		DrawSpriteScreenFX(5, FX_SCALE, temp0, temp1)
	end if

	if object.state == 5
		DrawSpriteScreenXY(6, temp0, temp1)
	end if

	if object.state == 6
		DrawSpriteScreenXY(object.frame, temp0, temp1)
	end if

	if object.state == 7
		DrawSpriteScreenFX(6, FX_ROTOZOOM, temp0, temp1)
	end if

	if object.state == 8
		DrawSpriteScreenFX(6, FX_ROTOZOOM, temp0, temp1)
		DrawRect(0, 0, screen.xsize, screen.ysize, 0, 0, 0, object.alpha)
	end if

	if object.state == 9
		DrawSpriteScreenFX(6, FX_ROTOZOOM, temp0, temp1)
		DrawRect(0, 0, screen.xsize, screen.ysize, 0, 0, 0, object.alpha)
	end if

	if object.state == 10
		DrawRect(0, 0, screen.xsize, screen.ysize, 0, 0, 0, 255)
	end if
end event

event ObjectStartup	
	
    	LoadSpriteSheet("CGS/CGS.gif")
	SpriteFrame(1, 0, 424, 4, 1,1) //0 BG
	SpriteFrame(0, 0, 32, 32, 1,6) //1 CHECK L
	SpriteFrame(0, 0, 32, 32, 34,6) //2 CHECK R	

	SpriteFrame(-63, -55, 121, 128, 1, 39) // 3 FRONT SHAPE
	SpriteFrame(-63, -55, 121, 128, 368, 39) //4 BACK SHAPE

	SpriteFrame(-63, -55, 121, 128, 124, 39) //5 TEXT
	SpriteFrame(-63, -55, 121, 128, 246, 39) //6 FULL LOGO


	//SHINE ANIMATION
	SpriteFrame(-63, -55, 121, 128, 246, 39) //7

	SpriteFrame(-63, -55, 121, 128, 1, 168) //8
	SpriteFrame(-63, -55, 121, 128, 124, 168) //9
	SpriteFrame(-63, -55, 121, 128, 246, 168) //10
	SpriteFrame(-63, -55, 121, 128, 368, 168) //11
	SpriteFrame(-63, -55, 121, 128, 1, 297) //12
	SpriteFrame(-63, -55, 121, 128, 124, 297) //13
	SpriteFrame(-63, -55, 121, 128, 246, 297) //14
	SpriteFrame(-63, -55, 121, 128, 368, 297) //15
	SpriteFrame(-63, -55, 121, 128, 1, 426) //16
	SpriteFrame(-63, -55, 121, 128, 124, 426) //17
	SpriteFrame(-63, -55, 121, 128, 246, 426) //18

	SpriteFrame(-63, -55, 121, 128, 246, 39) //19
	
end event

event RSDKDraw
	DrawSprite(0)
end event

event RSDKLoad
	LoadSpriteSheet("Global/Display.gif")
	SpriteFrame(-16, -16, 32, 32, 223, 172)
end event